home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / MacGzip 1.0 / source / Mac / MacIO.h < prev    next >
Text File  |  1995-08-31  |  4KB  |  174 lines

  1. /*
  2.  * MacIO.h
  3.  * (c) SPDsoft, August 20, 1995
  4.  */
  5.  
  6.  
  7. #ifndef __FILES__
  8. #include <Files.h>
  9. #endif
  10.  
  11. #ifndef _MACBINARY_H_
  12. #include "MacBinary.h"
  13. #endif
  14.  
  15. #ifndef EFAULT
  16. #define    EFAULT        ioErr
  17. #endif
  18. #ifndef EBADF
  19. #define    EBADF        ioErr
  20. #endif
  21. #ifndef ENFILE
  22. #define    ENFILE        tmfoErr
  23. #endif
  24.  
  25.  
  26. /*
  27.  * file table (iov)
  28.  */
  29.  
  30. #define MIO_MAX_FILES    2        /* enaugh for macgzip */
  31. #define MIO_BUFSIZE        4096    /* > sizeof(MBIIHeader) */
  32.  
  33. #define MIO_ASCII        0
  34. #define MIO_BINARY        1
  35. #define MIO_MACBIN        2
  36.  
  37. #define OM_RDONLY        0
  38. #define OM_WRONLY        0x0001
  39. #define OM_RDWR            0x0002
  40.  
  41. #define OM_TEXT            0x0040
  42. #define OM_BINARY        0x0080
  43. #define OM_MACBINARY    0x0100
  44.  
  45.  
  46. typedef struct
  47. {
  48.     int                    omode;
  49.     int                    fsomode;                /* save the original open mode (mb->plain) */
  50.     int                    mode;
  51.     short                dref,
  52.                         rref;
  53.     char                buffer[MIO_BUFSIZE];
  54.     long                pos;                    /* Bytes w/r. Updated after filling buffer */
  55.     long                len;
  56.     int                    blen;                    /* Lenght of buffer ('dirty') */
  57.     char                *bstart;                /* pointer to next free pos in buffer */
  58.     long                rdlen,                    /* rounded start.dlen (to 128) (w) */
  59.                         rrlen;                    /* rounded start.rlen (to 128) (w) */
  60.     int                    deof,
  61.                         reof;
  62.     int                    new;                    /* set if a new file was created for fs */
  63.     MBIIStartHeader        start;
  64.     MBIIHeader            header;
  65.     FSSpec                fs;
  66. } fildes;
  67.  
  68.  
  69. extern fildes    fd_table[MIO_MAX_FILES]; /* for low level access */
  70. extern int        fd_busy[MIO_MAX_FILES];
  71. extern OSType    DefCreator;
  72. extern OSType    DefType;
  73.  
  74. int fs_open( FSSpec *fs, int mode, ...);
  75. int fs_close(int fd);
  76. int fs_unlink(FSSpec *fs);
  77. int fs_read(int fd, char *buf, unsigned int n);
  78. int fs_write(int fd, char *buf, unsigned int n);
  79.  
  80.  
  81. /* from stat.h & sys/types, 01a,01nov94,ejo  written.*/
  82. /* this is a little dirty, but this is not a POSIX lib... */
  83.  
  84.  
  85. #include <time.h>
  86.  
  87. #if defined (__MWERKS__) && !defined (_YVALS)
  88. #include <yvals.h>
  89. #endif
  90.  
  91. typedef short            dev_t;
  92. typedef long            ino_t;
  93. typedef unsigned long    mode_t;
  94. typedef int             nlink_t;
  95. typedef long            off_t;
  96.  
  97. #ifdef __MWERKS__
  98. #ifndef _SIZET
  99. #define _SIZET
  100. typedef _Sizet            size_t;
  101. #endif
  102. #elif defined (THINK_C)
  103. #include <size_t.h>
  104. #else
  105. #ifndef __size_t__
  106. #define __size_t__
  107. typedef unsigned int    size_t;
  108. #endif
  109. #endif
  110.  
  111.  
  112. typedef unsigned int    ssize_t;
  113. typedef int                uid_t;
  114. typedef int                gid_t;
  115. typedef int                pid_t;
  116.  
  117.  
  118. #define S_IFMT        0170000    /* type of file */
  119. #define S_IFIFO        0010000    /* fifo */
  120. #define S_IFDIR        0040000    /* directory */
  121. #define S_IFCHR        0020000    /* character special */
  122. #define S_IFBLK        0060000    /* block special */
  123. #define S_IFREG        0100000    /* regular */
  124.  
  125. #define S_ISFIFO(m)    (((m) & S_IFMT) == S_IFIFO)
  126. #define S_ISCHR(m)    (((m) & S_IFMT) == S_IFCHR)
  127. #define S_ISDIR(m)    (((m) & S_IFMT) == S_IFDIR)
  128. #define S_ISBLK(m)    (((m) & S_IFMT) == S_IFBLK)
  129. #define S_ISREG(m)    (((m) & S_IFMT) == S_IFREG)
  130.  
  131. #define S_ISUID        0004000
  132. #define S_ISGID        0002000
  133.  
  134. #define S_IRUSR        00400
  135. #define S_IWUSR        00200
  136. #define S_IXUSR        00100
  137. #define S_IRWXU        (S_IRUSR | S_IWUSR | S_IXUSR)
  138.  
  139. #define S_IRGRP        00040
  140. #define S_IWGRP        00020
  141. #define S_IXGRP        00010
  142. #define S_IRWXG        (S_IRGRP | S_IWGRP | S_IXGRP)
  143.  
  144. #define S_IROTH        00004
  145. #define S_IWOTH        00002
  146. #define S_IXOTH        00001
  147. #define S_IRWXO        (S_IROTH | S_IWOTH | S_IXOTH)
  148.  
  149. /* historical file modes */
  150. #define    S_IREAD        00400
  151. #define    S_IWRITE    00200
  152. #define    S_IEXEC        00100
  153.  
  154. struct stat
  155.     {
  156.     mode_t    st_mode;
  157.     ino_t    st_ino;
  158.     dev_t    st_dev;
  159.     nlink_t    st_nlink;    
  160.     uid_t    st_uid;
  161.     gid_t    st_gid;
  162.     off_t    st_size;
  163.     time_t    st_atime;
  164.     time_t    st_mtime;
  165.     time_t    st_ctime;
  166. /* Extra fields for MacOS */
  167.     off_t   st_dsize;        /* Data Fork size rounded up to 128 */
  168.     off_t   st_rsize;        /* Res Fork size rounded up to 128 */
  169.     off_t   st_mbsize;        /* 128 bytes for MacBinary Header + DF & RF both rounded up to 128 */
  170.     };
  171.  
  172.  
  173. int fs_stat(FSSpec *fs, struct stat *buf);
  174.